A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets. The packets are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices within the network, referred to as routers, maintain tables of routing information that describe available routes through the network. Each route defines a path between two locations on the network. Upon receiving an incoming data packet, the router examines header information within the packet to identify the destination for the packet. Based on the header information, the router accesses the routing table, selects an appropriate route for the packet and forwards the packet accordingly.
Conventional routers typically include a mechanism, referred to herein as a management interface, for locally or remotely configuring the router. By interacting with the management interface, various clients, such as human users and automated scripts, can perform configuration tasks. For example, the clients may configure interface cards of the router, adjust parameters for the supported network protocols, specify the physical components within the routing device, modify the routing information maintained by the router, access software modules and other resources residing on the router, and perform other configuration tasks.
In some routers, the management interface allows a client to configure the present operational configuration of the router using a commit-based model. In a commit-based model, a client issues one or more configuration commands, and then directs the management interface to apply the commands by issuing a “commit” command. The client may further direct the management interface to disregard the commands by issuing a “rollback” command. Typically, the management interface maintains a copy of the operational configuration, i.e., a candidate configuration, to which the management interface applies the one or more configuration commands. Upon receiving a commit command, the changes made to the candidate configuration transfer to the operational configuration. A rollback command causes the management interface to replace the candidate configuration with a new copy of the operational configuration, thereby removing any changes to the candidate configuration made by the configuration commands.
The management interface, in some routers, also allows a client to archive the operational configuration of the router. Furthermore, the management interface allows a client to restore an archived configuration causing the archived configuration to become the operational configuration. Typically, when restoring an archived configuration, the archived configuration is first restored as the candidate configuration. Subsequently, the management interface issues the commit command to cause the configuration differences between the archived configuration and the operational configuration to transfer to the operational configuration, thereby effectively replacing the operational configuration with the candidate configuration.
As the complexity of computing networks has increased, there has been an increasing need for routers and other network devices to support concurrent configuration by multiple clients. Consequently, some devices allow multiple clients to concurrently issue configuration commands to edit the candidate configuration. In other words, the management interface of such a device does not “lock” the candidate configuration of the device to a single client, i.e., reject configuration commands from other clients, but receives configuration commands from the multiple clients concurrently. Allowing multiple clients to configure the candidate configuration may become problematic during a restore of an archived configuration since the multiple clients may corrupt the archived configuration. Multiple clients may inadvertently alter the archived configuration prior to when the archived configuration becomes the operational configuration and in some instances corrupt the archived configuration. Upon becoming the operational configuration, the corrupt archived configuration may cause the router to become unreachable, inoperable, or both.
To further complicate the restoration process, one or more of the clients often establish sessions with the router via the management interface and remotely transmit configuration commands via the session. A loss of a client connection to the router, i.e., session failure, while restoring an archived configuration may also result in partial restoration or corruption of the operational configuration of the router.
In addition, an archived configuration may be corrupt or contain incorrect configuration data such that, upon restoration of the archived configuration, the router may become inoperable and unreachable by the one or more clients. Thus, routers supporting restoration of an archived configuration do not provide a reliable environment for restoration of an archived configuration, and do not ensure router functionality once the restoration is complete.